	<?php
	class epFacturacionclass {

		public $total_rows=0;
		
		public function getListadoFacturacion($ejercicio_id, $tipo_id = 0, $order = 0, $pagina = 0, $registros = 0, $search = "") {

			global $db, $global_user;
			
			if(empty($pagina)){ 
				$inicio = 0; 
				$pagina = 1; 
			}else{ 
				$inicio = ($pagina - 1) * $registros; 
			} 			
			
			if ($tipo_id)
			{
				$strFiltroTipo = " (". _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion.tipo_id = '". $db->escape($tipo_id) ."') ";
			}
			else
			{
				$strFiltroTipo = " 1 ";
			}
			
			$ret = array();
						
			switch ($order)
			{						
				case '1': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha"; };break; 				// Fecha
				case '2': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id"; };break; 			// tipo de documento
				case '3': { $strOrder="ORDER BY SUBSTRING_INDEX(" .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.referencia, '-', '1')"; };break; 		// Nombre fiscal (Apaño para que ordene correctamente aunque tenga un string en medio
				case '4': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.codigo_cliente"; };break; 	// Código de cliente
				case '5': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.nombre_fiscal"; };break; 		// Nombre fiscal
				case '6': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.base"; };break;				// Base imponible
				case '7': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.valor_iva"; };break;			// Valor de IVA
				case '8': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total_iva"; };break;			// Total de IVA
				case '9': { $strOrder="ORDER BY " .  _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total"; };break;				// Total de documento
				default:
				{
					$strOrder="ORDER BY " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha, id DESC"; // Fecha Descendente
				}			
			}		
									
		
			$sql = "
				SELECT SQL_CALC_FOUND_ROWS 				
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.id,
				DATE_FORMAT(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha,'%d/%m/%Y') AS fecha,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc.nombre AS tipo_nombre,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series.nombre AS serie_nombre,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.referencia,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.codigo_cliente,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.nombre_fiscal,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.nombre_comercial,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.base,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.valor_iva,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total_iva,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "paises ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "paises.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.pais_id
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.serie_id
				WHERE ". $strFiltroTipo ."
				AND (" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.ejercicio_id = '". $db->escape($ejercicio_id) ."')
				". $strOrder ."
				LIMIT ". $inicio .", " .$registros ."				
			";

			//echo "<pre>".$sql ."</pre>";
											
			$result_rows = $db->fetch_all_array ( $sql );
			$this->total_rows = $db->found_rows(); // Total de registros

			return $result_rows;
			
		}
		
		/*
			Devuelve la información general de un documento
		*/
		function getDocumento($doc_id)
		{
			global $db;

			$sql = "
				SELECT
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.ejercicio_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.doc_parent_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc.nombre AS tipo_nombre,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.serie_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series.nombre AS serie_letra,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.referencia,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.metodo_pago_id,
				DATE_FORMAT(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha,'%d/%m/%Y (%H:%i)') AS fecha,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.codigo_cliente,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.nombre_fiscal,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.nombre_comercial,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.cif,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.direccion_envio_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.direccion,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.codigo_postal,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.localidad,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.provincia,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.pais_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.comentarios,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.base,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.valor_iva,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total_iva,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.total,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.usuario_id,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "users.name AS usuario_nombre,
				DATE_FORMAT(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.date_add,'%d/%m/%Y (%H:%i)') AS date_add,
				DATE_FORMAT(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.date_upd,'%d/%m/%Y (%H:%i)') AS date_upd
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.serie_id
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "users ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "users.id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.usuario_id
				WHERE (" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.id = '". $db->escape($doc_id) ."') LIMIT 1
			";
											
			$result_rows = $db->query_first ( $sql );

			return $result_rows;

		}		

		/*
			Devuelve los items de un documento
		*/
		function getDocumentoItems($doc_id)
		{
			global $db, $global_user;

			$sql = "
				SELECT SQL_CALC_FOUND_ROWS *
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items
				WHERE (doc_id = '". $db->escape($doc_id) ."')				
			";
											
			$result_rows = $db->fetch_all_array ( $sql );

			return $result_rows;

		}

		/*
			Devuelve un array con las ventas de un producto
			Solo facturas
		*/
		function getVentasProducto($producto_ref) {
			global $db;

			$sql = "				

				SELECT
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha,
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items.referencia,
				SUM(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items.cantidad) as cantidad
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items
				LEFT JOIN " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion ON " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items.doc_id = " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.id
				WHERE (" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items.referencia = '". $db->escape($producto_ref) ."') AND
				(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.tipo_id = 1) AND
					(" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha BETWEEN DATE_SUB(NOW(), INTERVAL 365 DAY) AND NOW())
				GROUP BY " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha
				ORDER BY " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion.fecha ASC
			";
						
			echo "<pre>". $sql ."</pre>";					
			$result_rows = $db->fetch_all_array ( $sql );

			return $result_rows;

		}
		
		/*
			Devuelve el ID de la empresa predeterminada
		*/
		function getEmpresaPredeterminada() {
			global $db;

			$sql = "				

				SELECT
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa.id
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa
				WHERE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa.predeterminada = 1
			";
						
			$result = $db->query_first ( $sql );
			return $result['id'];

		}		
		
		/*
			Devuelve los ejercicios de una empresa
		*/
		function getEjerciciosEmpresa($empresa_id) {
			global $db;

			$sql = "				
				SELECT *
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_ejercicios
				WHERE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_ejercicios.empresa_id = '". $db->escape($empresa_id) ."'
				ORDER BY ano ASC
			";
						
			$result = $db->fetch_all_array ( $sql );
			return $result;

		}						
		
		/*
			Devuelve el ID del ejercicio actual de una empresa
		*/
		function getEjercicioEmpresa($empresa_id) {
			global $db;

			$sql = "				
				SELECT
				" . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa.ejercicio_id AS ejercicio_id
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa
				WHERE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa.id = '". $db->escape($empresa_id) ."'
				LIMIT 1
			";
						
			$result = $db->query_first ( $sql );
			return $result['ejercicio_id'];

		}				
		
		/*
			Devuelve las series disponibles
		*/
		function getSeries() {
			global $db;

			$sql = "				
				SELECT *
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series				
				ORDER BY id ASC
			";
						
			$result = $db->fetch_all_array ( $sql );
			return $result;

		}								
		
		/*
			Devuelve todos los tipos de documento posibles
		*/
		function getTiposDocumento() {
			global $db;

			$sql = "				
				SELECT *
				FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_tiposdoc
				ORDER BY id ASC
			";
						
			$result = $db->fetch_all_array ( $sql );
			return $result;

		}										

	}
?>